package com.limin.commanser.mapper;

import com.limin.commanser.dto.*;
import com.limin.commanser.entity.Activity;
import com.limin.commanser.entity.Leave;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


@Repository
public interface LeaveMapper {



//    生成请假单
    public HashMap searchLeaveById(HashMap param);


    /*
     * 分页查询活动信息
     * 根据结束时间降序
     * 其他活动、招新
     * 某某社团查询
     * @param params
     * @return ActivityDto>
     */
    List<LeaveDto> findAllByPaging(Map<Object, Object> params);

    /*
     * 活动表总记录条数
     * 分别查询 其他活动 & 招新
     * @return Integer
     */
    Integer findTotal();

    /*
     * 发布活动、招新
     * @param activity
     *
     */
    void add(Leave leave);

    /*
     * 管理员: 根据ID删除活动信息
     * @param activityId
     *
     */
    void removeById(@Param("leaveId") Integer leaveId);

    /*
     * 活动发布的社团负责人可以修改活动信息
     * @param activity
     *
     */
    void modify(Leave leave);

    /*
     * 管理员审核活动
     * @param activity
     *
     */
    void approvalLeave(Leave leave);

    /*
     * 查询发布的活动、招新
     * @param communityId
     * @param activityType
     * @return ActivityDto>
     */
    List<LeaveDto> findPuplishLeaves(@Param("leaveStuId") String leaveStuId, @Param("leaveType") Integer leaveType);


    /*
     * 查询参加的活动、招新
     * @param userId
     * @param activityType
     * @return ActivityDto>
     */
    List<LeaveDto> findJoinLeaves(@Param("userId") String userId, @Param("leaveType") Integer leaveType);

    /*
     *统计查询某个社团有多少活动数据
     * @param []
     * @return java.util.List<com.limin.commanser.entity.News>
     */
    Integer findAllByCommunityIdStatistics(@Param("communityId") Integer communityId);

    /*
     *查询所有活动 【用于统计】
     * @param []
     * @return java.util.List<com.limin.commanser.entity.Activity>
     */
    List<Leave> findAllByStatistics();

    /*
     *  荍荍：申请请假
     * @param
     * @return
     */
    void joinLeave(JoinLeaveDto joinLeaveDto);

    long searchContradiction(HashMap param);

    /*
     * 荍荍：分页查询登录学生自己的请假记录
     * @param params
     * @return ArrayList<HashMap>
     */
    public ArrayList<HashMap> searchLeaveByPage(HashMap param);

    /*
     * 荍荍：查询总数
     * @param param
     * @return long
     */
    long searchLeaveCount(HashMap param);

    /*
     * 荍荍：删除学生自己的请假记录
     * @param leaveId
     * @return int
     */
    public int deleteLeaveById(Integer leaveId);

    /*
     * 荍荍：更新学生自己的请假记录
     * @param updateLeaveDto
     * @return int
     */
    int update(UpdateLeaveDto updateLeaveDto);

}
